#ifndef GLOBAL_H
#define GLOBAL_H
#include <QWidget>
#include <functional>
#include "QStyle"


//声明一个函数对象：1定义一个函数对象类型  2.使用该类型声明一个类
using fun_repolish=std::function<void(QWidget*)>;

//声明一个函数对象
extern fun_repolish repolish;


extern QString gate_url_prefix;



//向服务器发送消息的     request(发送请求)    require(接受回应) 功能分类，要更具功能从而调用到
//注册模块*ReqID
enum ReqId
{
    ID_GET_VARIFY_CODE=1001,    //获取验证码
    ID_REG_USER=1002,           //注册用户
    ID_RESET_PASSWD=1003,       //修改密码
    ID_LOGIN=1004,              //登录
};

//客户端的模块：注册模块，登录模块之类的，用于客户端QT界面回应
enum Modules
{
    REGISTERMOD =0,
    RESETPASSWDMOD=1,
    LOGINMOD=2,
};

//底层消息接受的解析结果
enum ErrorCodes
{

    ERR_NETWORK=999,
    SUCCESS=1000,
    ERR_JSON=1001,
    RPCFailed = 1002,  //RPC请求错误
    VarifyExpired = 1003,	//验证码过期
    VarifyCodeErr = 1004,	//验证码错误
    UserExist=1005,			//用户已经存在
    PasswdInvalid = 1006    //密码错误



};

//注册消息时的错误的枚举类型
enum TipErr{
    TIP_SUCCESS = 0,
    TIP_EMAIL_ERR = 1,
    TIP_PWD_ERR = 2,
    TIP_CONFIRM_ERR = 3,
    TIP_PWD_CONFIRM = 4,
    TIP_VARIFY_ERR = 5,
    TIP_USER_ERR = 6
};


//两种外状态机
enum ClickLbState{
    Normal = 0,
    Selected = 1
};


/*
 *
 * 对象的状态------>动画状态，不是一一对应的
*/
//内部状态
enum innerState{
    normal = 0,
    hover = 1,
    click=2
};
//可以组合出6个状态



/*
 * 连天服务器的信息
*/
struct ServerInfo
{
    int Uid;
    QString Host;
    QString Port;
    QString Token;
};




#endif // GLOBAL_H
